package com.dqyt.khjc.service;

import com.dqyt.common.check.CheckTool;
import com.dqyt.common.constant.AuthorityID;
import com.dqyt.common.utils.UserInfoUtil;
import com.dqyt.khjc.bean.*;
import com.dqyt.khjc.mapper.ModelMapper;
import com.dqyt.khjc.utils.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Service
public class ModelService {

    @Autowired
    private ModelMapper modelMapper;





    /**
     * 分页查询型号规格
     * @param request
     * @param page
     * @param size
     * @param name
     * @param parentid
     * @return
     */
    public ResultMsg getModelListPage(HttpServletRequest request, Integer page, Integer size, String name, long parentid,String mtype) {

        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);
            if (page != null && size != null) {
                page = (page - 1) * size;
            }

            int mtypeInt = Integer.parseInt(mtype);
            //查询
            List<ModelBean> data  = modelMapper.getModelListPage(page,size,name,parentid,mtypeInt);
            long  total = modelMapper.getModelTotalNumber(name,parentid,mtypeInt);

            RespPageBean bean = new RespPageBean();
            bean.setData(data);
            bean.setTotal(total);
            ret.setCode(ResultMsg.SUCESS);
            ret.setData(bean);

        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;

        }

    /**
     * 新增型号规格
     * @param request
     * @param name
     * @param parentid
     * @return
     */
    public ResultMsg addModel(HttpServletRequest request, String name, long parentid,int mtype) {

        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {

            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);

            // 用户权限检查 是否可以新增客户信息
//            if (!CheckTool.checkAuthority(user, AuthorityID.JCSJGL_XHGG)) {
//                ret.setCode(ResultMsg.ERROR);
//                ret.setMsg("你没有对应的操作权限");
//                return ret;
//            }

            ModelBean modelBean =  modelMapper.getModelByPidOrName(name, parentid,mtype);
            if(null !=modelBean){
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("该制造厂商已经存在此型号的数据了");
                return ret;
            }

            ModelBean modelBean1  = new ModelBean();
            modelBean1.setName(name);
            modelBean1.setMtype(mtype);
            modelBean1.setParentid(parentid);
            modelBean1.setAddTime(TimeUtil.currentTimeMillis());
            modelBean1.setAddUser(user.getUserId()+"");
            int res = modelMapper.addModel(modelBean1);
            if(res>0){
                ret.setCode(ResultMsg.SUCESS);
                ret.setMsg("添加成功");
            }else{
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("未知的错误，请稍候再试！");
            }
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;

    }

    /**
     * 删除型号规格
     * @param request
     * @param modelId
     * @return
     */
    public ResultMsg delModel(HttpServletRequest request, long modelId) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);

            // 用户权限检查 是否可以新增客户信息
//            if (!CheckTool.checkAuthority(user, AuthorityID.JCSJGL_XHGG)) {
//                ret.setCode(ResultMsg.ERROR);
//                ret.setMsg("你没有对应的操作权限");
//                return ret;
//            }
            long res =  modelMapper.delModelById(modelId);
            if(res>0){
                ret.setCode(ResultMsg.SUCESS);
                ret.setMsg("删除成功");
            }else{
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("未知的错误，请稍候再试！");
            }
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }


    /**
     * 修改型号规格
     * @param request
     * @param modelId
     * @param name
     * @param parentid
     * @return
     */
    public ResultMsg updateModel(HttpServletRequest request, long modelId, String name, long parentid,String mtype) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);
            // 用户权限检查 是否可以新增客户信息
//            if (!CheckTool.checkAuthority(user, AuthorityID.JCSJGL_SCCS)) {
//                ret.setCode(ResultMsg.ERROR);
//                ret.setMsg("你没有对应的操作权限");
//                return ret;
//            }

            int mtypeInt =Integer.parseInt(mtype);

            ModelBean modelBean =  modelMapper.getModelByPidOrName(name, parentid,mtypeInt);
            if(null !=modelBean && modelBean.getModelId() !=modelId){
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("该制造厂商已经存在此型号的数据了");
                return ret;
            }
            long res =  modelMapper.updateModel(modelId,name,parentid,mtypeInt);
            if(res>0){
                ret.setCode(ResultMsg.SUCESS);
                ret.setMsg("修改成功");
            }else{
                ret.setCode(ResultMsg.ERROR);
                ret.setMsg("未知的错误，请稍候再试！");
            }
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }

    /**
     * 查询某个制造厂商下面的所有型号
     * @param request
     * @param parentid
     * @return
     */
    public ResultMsg getModelByPid(HttpServletRequest request, long parentid) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);
           List<ModelBean> mlist =  modelMapper.getModelByPid(parentid);
            ret.setCode(ResultMsg.SUCESS);
            ret.setData(mlist);
            ret.setMsg("查询成功");
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }


    /**
     * 查询某个制造厂商下面的所有型号
     * @param request
     * @param parentid
     * @return
     */
    public ResultMsg getModelHxqByPid(HttpServletRequest request, long parentid) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);
            List<ModelBean> mlist =  modelMapper.getModelHxqByPid(parentid);
            ret.setCode(ResultMsg.SUCESS);
            ret.setData(mlist);
            ret.setMsg("查询成功");
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }


    /**
     * 查询某个制造厂商下面的所有型号
     * @param request
     * @param parentid
     * @return
     */
    public ResultMsg getModelFhqpByPid(HttpServletRequest request, long parentid) {
        ResultMsg ret = new ResultMsg(); // 声明一个返回值
        try {
            // 检查用户是否登录Token是否正确
            ret = UserInfoUtil.isAuthori_Web(request);
            // 如果有错误信息
            if (ret != null) {
                return ret;
            }
            ret = new ResultMsg(); // 声明一个返回值
            User user = UserInfoUtil.getUser_Web(request);
            List<ModelBean> mlist =  modelMapper.getModelFhqpByPid(parentid);
            ret.setCode(ResultMsg.SUCESS);
            ret.setData(mlist);
            ret.setMsg("查询成功");
        }catch (Exception e) {
            ret.setCode(ResultMsg.ERROR);
            ret.setMsg("未知的错误，请稍候再试！");
            e.printStackTrace();
        }
        return ret;
    }



}
